import { ElMessage } from "element-plus";
import router from "@/router";
import { checkOnlinet } from "@/api/";
import { clearAllSession } from "./auth";

// 假设getIsTokenExpired是一个函数，用于检查Token是否过期并返回布尔值
async function getIsTokenExpired() {
  // 这里应该包含检查Token逻辑
  // 返回true表示Token已过期，返回false表示Token仍然有效
}

// 设置轮询间隔时间，例如每1秒检查一次
const POLLING_INTERVAL = 3000;
let intervalId = "";
export function startTokenPolling() {
  console.log("Token轮询开始");
  if (intervalId) return;
  // 立即执行一次检查
  // 清除定时器的函数
  function stopPolling() {
    clearInterval(intervalId);
    let roles = sessionStorage.getItem("ROLES") || "";
    if (roles === "student") {
      router.replace("/login-pra");
    } else {
      router.replace("/login");
    }
    clearAllSession();
  }

  // 检查Token的函数
  async function checkToken() {
    try {
      let token = sessionStorage.getItem("api-token");
      if (!token) {
        stopPolling();
      }
      let { success, msg } = await checkOnlinet();
      if (!success) {
        ElMessage.error(msg);
        stopPolling();
      } else {
        // 设置定时器，定期检查Token
        if (intervalId) return;
        intervalId = setInterval(checkToken, POLLING_INTERVAL);
      }
    } catch (error) {
      stopPolling();
    }
  }
  checkToken();

  // 返回停止轮询的函数，以便外部调用
  return stopPolling;
}

// 开始Token轮询
// const stopPolling = startTokenPolling();

// 如果需要停止轮询，可以调用stopPolling函数
// stopPolling();
